GoLang 初见
官方文档翻译与实践
Go编码前置知识
go以包的形式组织代码,一个包(package)代表一个文件夹下一系列源文件的集合,他们会被一起编译,被定义在同个包下的方法(functions)、类型(types)、变量(variables)、常量(constants),在该工作区下是共享可见的。
一个存储库,可以包含一个或者多个模块(modules),一个模块是一系列一起发布的相关go包(packages)的集合。一个go存储库,通常只包含一个模块(module),位于存储库的根目录。根目录下有个名为go.mod
的文件声明了该模块的模块路径:模块内所有包的导入路径前缀。该模块包含其下级具有自己的go.mod
文件的直属模块,不含直属模块下级包含go.mod
文件的子目录。(这个存疑,感觉文档写的英语有点绕,等后面在看到合适的解释,再修改)
go工作空间,允许你使用本地依赖,类似于Monorepo模式下的工作空间,本地依赖可以作为实际依赖进行引入。
go包的导入path:go.mod
文件中的首行module example.com/web-service-gin
,不仅声明了包的名字,也表示了该包的下载地址应为: https://example.com/web-service-gin
。
在指定module内执行go install
、go install .
、go install 该包的module path
,会build该包为二进制可执行文件到GOBIN目录下
,如需修改/重置GOBIN
环境变量配置,可通过以下命令:
# 默认为 linux等:$HOME/go/bin windows: /users/XXX/go/bin
# 修改
go env -w GOBIN=/somewhere/else/bin
# 重置
go env -u GOBIN
go install
这样的命令,需要在module包中执行,否则会报错,要区别于前端的npm install
;为了方便起见,go 命令接受相对于工作目录的路径,所以在module包内指定go.mod
位置,执行go install
、go install .
、go install 该go.mod声明的module path